package it.venere.beans;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * Entity Bean del Conto
 * @author Luca
 */
@Entity(name="Conto")
@Table(name="CONTO")
public class Conto implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private Long numConto;
    private int pin, bloccato;
    private Cliente cliente;
    private double saldo;
    
    public Conto() {
        super();
    }
    
    public Conto(int pin, int bloccato, double saldo, Cliente cliente) {
        super();
        this.setPin(pin);
        this.setBloccato(bloccato);
        this.setSaldo(saldo);
        this.setCliente(cliente);
    }
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="NUMCONTO")
    public Long getNumConto() {
        return numConto;
    }

    public void setNumConto(Long numConto) {
        this.numConto = numConto;
    }
    
    @Column(name="BLOCCATO")
    public int getBloccato() {
        return bloccato;
    }

    public void setBloccato(int bloccato) {
        this.bloccato = bloccato;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="CLIENTE_NUMCLIENTE")
    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    @Column(name="PIN")
    public int getPin() {
        return pin;
    }

    public void setPin(int pin) {
        this.pin = pin;
    }

    @Column(name="SALDO")
    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (numConto != null ? numConto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Conto)) {
            return false;
        }
        Conto other = (Conto) object;
        if ((this.numConto == null && other.numConto != null) || 
                (this.numConto != null && !this.numConto.equals(other.numConto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        String blocco = "NO";
        if (bloccato == 3) {
            blocco = "SI";
        }
        return "*** Conto ***\nNumero: " + numConto + "\nPIN: " + pin +
        "\nBloccato: " + blocco + "\nSaldo: " + saldo;
    }
}
